import java.util.*;

public class Main {

    public static int n;
    public static List<Integer> list;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int t = sc.nextInt();
        while (t > 0) {
            t--;
            n = sc.nextInt();
            int k = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = sc.nextInt();
            }
            list = new ArrayList<>();
            dfs(k, arr);
            int ret = Integer.MAX_VALUE;
            for (int num : list) {
                ret = Math.min(ret, num);
            }
            System.out.println(ret);
        }

        sc.close();
    }

    public static void dfs(int k, int[] arr) {
        //找最大值与最小值
        int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
        int maxIndex = 0, minIndex = 0; //下标
        for (int i = 0; i < n; i++) {
            if (min > arr[i]) {
                min = arr[i];
                minIndex = i;
            }
            if (max < arr[i]) {
                max = arr[i];
                maxIndex = i;
            }
        }

        if (k == 0) {
            list.add(max - min);
            return;
        }

        //将最小值变为最大值
        arr[minIndex] = max;
        dfs(k - 1, arr);
        //回溯
        arr[minIndex] = min;

        //将最大值变为最小值
        arr[maxIndex] = min;
        dfs(k - 1, arr);
        //回溯
        arr[maxIndex] = max;

    }

//    public static void dfs(int k, int index, int[] arr) {
//
//        //找最大值与最小值
//        int max = 0, min = 0;
//        for (int i = 0; i < n; i++) {
//            min = Math.min(min, arr[i]);
//            max = Math.max(max, arr[i]);
//        }
//
//        if (index == n) {
//            list.add(max - min);
//            return;
//        }
//
//
//        for (int i = index; i < n; i++) {
//            if (k > 0) {
//                int num = arr[i]; // 保存该下标的原数字
//                // 变成大的
//                arr[i] = max;
//                dfs(k - 1, i + 1, arr);
//                //回溯
//                arr[i] = num;
//
//                // 变成小的
//                arr[i] = min;
//                dfs(k - 1, i + 1, arr);
//                //回溯
//                arr[i] = num;
//            }
//
//            //不变
//            dfs(k, i + 1, arr);
//        }
//    }
}
